package com.jpress.model;

import java.util.Calendar;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
public class Post {
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private int id;
	@ManyToOne
	private Admin autor;
	@ManyToOne
	private Blog blog;
	@Temporal(TemporalType.TIMESTAMP)
	private Calendar data;
	private String titulo;
	private String texto;
	private String imagem;
	@ManyToOne
	private Categoria categoria;
	@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="post")
	private List<Comentario> comentarios;
	
	public Post(){}

	public Post(Admin autor, Blog blog, Calendar data, String titulo, String texto) {
		super();
		this.autor = autor;
		this.blog = blog;
		this.data = data;
		this.titulo = titulo;
		this.texto = texto;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public Usuario getAutor() {
		return autor;
	}

	public void setAutor(Admin autor) {
		this.autor = autor;
	}
	
	public String getNomeAutor(){
		return this.autor.getNome();
	}

	public Blog getBlog() {
		return blog;
	}

	public void setBlog(Blog blog) {
		this.blog = blog;
	}

	public Calendar getData() {
		return data;
	}

	public void setData(Calendar data) {
		this.data = data;
	}

	public String getTitulo() {
		return titulo;
	}

	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}

	public String getTexto() {
		return texto;
	}

	public void setTexto(String texto) {
		this.texto = texto;
	}

	public String getImagem() {
		return imagem;
	}

	public void setImagem(String imagem) {
		this.imagem = imagem;
	}

	public Categoria getCategoria() {
		return categoria;
	}

	public void setCategoria(Categoria categoria) {
		this.categoria = categoria;
	}
	
	public List<Comentario> getComentarios() {
		return comentarios;
	}

	public void setComentarios(List<Comentario> comentarios) {
		this.comentarios = comentarios;
	}
	
	public void adicionarComentario(Comentario comentario){
		this.comentarios.add(comentario);
	}

	@Override
	public String toString() {
		return "Post [id=" + id + ", autor=" + autor + ", blog=" + blog
				+ ", data=" + data + ", titulo=" + titulo + ", texto=" + texto
				+ ", imagem=" + imagem + ", categoria=" + categoria
				+ ", comentarios=" + comentarios + "]";
	}

}
